cairoblur: Fix the blur code
authorJasper St. Pierre <jstpierre@mecheye.net>
Mon, 27 Oct 2014 17:05:35 +0000 (10:05 -0700)
committerJasper St. Pierre <jstpierre@mecheye.net>
Mon, 27 Oct 2014 17:10:32 +0000 (10:10 -0700)
We weren't passing in the right "d" value, which was causing the blur to
behave incorrectly, especially in the case of 1px blurs, which would
cause no blurs at all.

The blur should now match the web.

gtk/gtkcairoblur.c

index b3f14db5b2f6a33f8e23e9db8c9c45492117d933..4e03a7f2eb044b98317145955d9e0ef5b7ac1221 100644 (file)
@@ -147,6 +147,7 @@ _boxblur (guchar  *buffer,
           int      radius)
 {
   guchar *flipped_buffer;
+  int d = _gtk_cairo_blur_compute_pixels (radius);
 
   flipped_buffer = g_malloc (width * height);
 
@@ -154,13 +155,13 @@ _boxblur (guchar  *buffer,
   flip_buffer (flipped_buffer, buffer, width, height);
 
   /* Step 2: blur rows (really columns) */
-  blur_rows (flipped_buffer, buffer, height, width, radius);
+  blur_rows (flipped_buffer, buffer, height, width, d);
 
   /* Step 3: swap rows and columns */
   flip_buffer (buffer, flipped_buffer, height, width);
 
   /* Step 4: blur rows */
-  blur_rows (buffer, flipped_buffer, width, height, radius);
+  blur_rows (buffer, flipped_buffer, width, height, d);
 
   g_free (flipped_buffer);
 }